package test.n00600;


import static utils.Tools.listOf;

public class Problem00660 {
    public static void main(String[] args) {
        println(new int[]{1, 2, 3});
        println(new int[]{9});
    }

    public static void println(int[] digits) {
        Solution ss = new Solution();
        System.out.println(listOf(digits) + "," + listOf(ss.plusOne(digits)));
    }

    public static class Solution {

        /**
         * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
         *
         * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
         *
         * 你可以假设除了整数 0 之外，这个整数不会以零开头。
         *
         * 来源：力扣（LeetCode）
         * 链接：https://leetcode.cn/problems/plus-one
         * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
         *
         *
         * @param digits
         * @return
         */
        public int[] plusOne(int[] digits) {
            final int length = digits.length;

            int pos = length - 1;
            digits[pos] = digits[pos] + 1;
            while (pos >= 0) {
                if (digits[pos] > 9 && pos - 1 >= 0) {
                    digits[pos] = 0;
                    digits[pos - 1] = digits[pos - 1] + 1;
                }
                pos--;
            }

            if (digits[0] >= 10) {
                int[] array = new int[digits.length + 1];
                array[0] = 1;
                return array;
            }
            return digits;
        }
    }
}
